Address space layout randomization (ASLR) is a security feature available in Windows Vista™ and later versions of Windows®. ASLR is intended to prevent an attacker from predicting target virtual addresses of important data/functions. This feature overrides the default load addresses of executable modules specified in a Portable Executable (PE) image header, and sets a new random load address for every loaded module. The new load address of each module is valid until the next restart of the operating system. It also randomizes virtual memory allocation requests from applications.
While ASLR can improve security, one disadvantage of ASLR is that, because of the randomization of load addresses, modules that could otherwise be shared by host operating systems and guest operating systems are not able to be shared. This is because the randomization of load addresses causes the modules to start at different virtual addresses. Thus, while the modules may be the same on a disk, after loading, they are at different virtual address and cannot be shared. As a result, memory usage may be increased in systems that implement ASLR.